Skip to content

refactor: use OpenObserve helm charts for deployment instead of Kubernetes manifests#56

Merged
LakshanSS merged 1 commit intoopenchoreo:mainfrom
nilushancosta:observability
Mar 18, 2026
Merged

refactor: use OpenObserve helm charts for deployment instead of Kubernetes manifests#56
LakshanSS merged 1 commit intoopenchoreo:mainfrom
nilushancosta:observability

Conversation

@nilushancosta
Copy link
Copy Markdown
Contributor

@nilushancosta nilushancosta commented Mar 18, 2026

Purpose

openchoreo/openchoreo#2841
The observability modules (observability-logs-openobserve and observability-tracing-openobserve) deploy OpenObserve using Kubernetes manifests. This makes it harder to stay up to date with upstream releases and limits available configuration options.

Goals

  • Replace OpenObserve Kubernetes manifests with the official upstream Helm charts as dependencies.
  • Provide two deployment modes: standalone (local disk, enabled by default) and distributed HA (disabled by default).

Approach

  • Removed statefulset.yaml and service.yaml templates from both modules.
  • Added openobserve-standalone (v0.60.3) and openobserve (v0.60.3) from https://charts.openobserve.ai as Helm dependencies in both Chart.yaml files. Standalone is enabled by default; distributed is disabled.
  • Updated READMEs with the new secret creation command, an "OpenObserve deployment modes" section explaining the two charts, and instructions for switching to HA mode.

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for multiple OpenObserve deployment modes (standalone and high-availability configurations)
    • Added configurable TLS settings for log forwarding
  • Chores

    • Updated Helm chart versions (logs: 0.3.10→0.4.0, tracing: 0.1.5→0.2.0)
    • Standardized credential key naming (ZO_ROOT_USER_EMAIL/ZO_ROOT_USER_PASSWORD)
    • Added new OpenObserve chart dependencies for flexible deployment options
  • Documentation

    • Updated installation and upgrade instructions with new version references
    • Added guidance for switching between deployment modes

…netes manifests

Signed-off-by: Nilushan Costa <nilushan@wso2.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 18, 2026

📝 Walkthrough

Walkthrough

The PR migrates OpenObserve deployments in logs and tracing observability modules from inline Helm manifests to upstream Helm chart dependencies (openobserve-standalone and openobserve). Admin credential keys are renamed to ZO_ROOT_USER_EMAIL/ZO_ROOT_USER_PASSWORD, Helm chart versions are bumped, and TLS configuration becomes template-driven instead of hard-coded.

Changes

Cohort / File(s) Summary
Documentation Updates
observability-logs-openobserve/README.md, observability-tracing-openobserve/README.md
Added "OpenObserve deployment modes" sections describing standalone and HA modes with updated chart version references (0.3.10→0.4.0 for logs; 0.1.5→0.2.0 for tracing) and instructions to switch deployment modes.
Helm Chart Metadata
observability-logs-openobserve/helm/Chart.yaml, observability-tracing-openobserve/helm/Chart.yaml
Version bumps (0.3.10→0.4.0 and 0.1.5→0.2.0 respectively) with two new chart dependencies: openobserve-standalone (0.60.3) and openobserve (0.60.3) from https://charts.openobserve.ai.
Credential Key Migration
observability-logs-openobserve/helm/templates/adapter/deployment.yaml, observability-logs-openobserve/helm/templates/openobserve-setup/job.yaml, observability-tracing-openobserve/helm/templates/adapter/deployment.yaml
Updated secret key references from username/password to ZO_ROOT_USER_EMAIL/ZO_ROOT_USER_PASSWORD across environment variable configurations.
Template Removal & Refactoring
observability-logs-openobserve/helm/templates/openobserve/service.yaml, observability-logs-openobserve/helm/templates/openobserve/statefulset.yaml, observability-logs-openobserve/helm/templates/openobserve/httproute.yaml, observability-tracing-openobserve/helm/templates/openobserve/service.yaml, observability-tracing-openobserve/helm/templates/openobserve/statefulset.yaml
Removed inline OpenObserve Service and StatefulSet templates (now sourced from upstream dependencies); updated HTTPRoute to reference openobserve-standalone values structure.
Configuration & TLS Templating
observability-logs-openobserve/helm/templates/fluent-bit/config.yaml
Changed hard-coded TLS enablement to template-driven value via {{ index .Values "fluent-bit" "openObserveTls" }}.
Values Restructuring
observability-logs-openobserve/helm/values.yaml, observability-tracing-openobserve/helm/values.yaml
Renamed openObserve block to openobserve-standalone with expanded auth and persistence sections; added separate openobserve block (disabled by default); updated credential key references throughout; removed inline service and storage configuration.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

Possibly related PRs

Suggested reviewers

  • akila-i
  • LakshanSS

Poem

🐰 Charts now dance with upstream grace,
Dependencies replace each trace,
Credentials renamed, TLS set free,
Helm modes toggle merrily!
Observability blooms anew,
Thanks for modernizing OpenObserve through!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly matches the primary objective: replacing Kubernetes manifests with official OpenObserve Helm charts for deployment in both observability modules.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
observability-logs-openobserve/helm/templates/openobserve/httproute.yaml (1)

4-27: ⚠️ Potential issue | 🔴 Critical

Update HTTPRoute condition to support both standalone and distributed (HA) modes.

The HTTPRoute is currently only created when openobserve-standalone.enabled is true. However, this chart includes a distributed (HA) deployment option (openobserve.enabled), and both modes create a service with the same name (openobserve). When users switch to HA mode as documented in the README, the HTTPRoute will not be created, breaking external access.

Update the condition to trigger for either deployment mode:

Suggested condition update
-{{- if (index .Values "openobserve-standalone" "enabled") }}
+{{- if or (index .Values "openobserve-standalone" "enabled") (index .Values "openobserve" "enabled") }}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@observability-logs-openobserve/helm/templates/openobserve/httproute.yaml`
around lines 4 - 27, The template currently creates the HTTPRoute only when
openobserve-standalone is enabled; change the top-level conditional to create
the HTTPRoute when either standalone or HA is enabled by replacing the current
if check (index .Values "openobserve-standalone" "enabled") with an or
expression that checks both (index .Values "openobserve-standalone" "enabled")
and (index .Values "openobserve" "enabled") so the HTTPRoute is rendered when
either openobserve-standalone.enabled or openobserve.enabled is true.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@observability-logs-openobserve/helm/templates/openobserve/httproute.yaml`:
- Around line 4-27: The template currently creates the HTTPRoute only when
openobserve-standalone is enabled; change the top-level conditional to create
the HTTPRoute when either standalone or HA is enabled by replacing the current
if check (index .Values "openobserve-standalone" "enabled") with an or
expression that checks both (index .Values "openobserve-standalone" "enabled")
and (index .Values "openobserve" "enabled") so the HTTPRoute is rendered when
either openobserve-standalone.enabled or openobserve.enabled is true.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bc55cc2c-bb4e-4ea5-8b36-dc7dcbbddeee

📥 Commits

Reviewing files that changed from the base of the PR and between 5db982a and d0b1d47.

⛔ Files ignored due to path filters (2)
  • observability-logs-openobserve/helm/Chart.lock is excluded by !**/*.lock
  • observability-tracing-openobserve/helm/Chart.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • observability-logs-openobserve/README.md
  • observability-logs-openobserve/helm/Chart.yaml
  • observability-logs-openobserve/helm/templates/adapter/deployment.yaml
  • observability-logs-openobserve/helm/templates/fluent-bit/config.yaml
  • observability-logs-openobserve/helm/templates/openobserve-setup/job.yaml
  • observability-logs-openobserve/helm/templates/openobserve/httproute.yaml
  • observability-logs-openobserve/helm/templates/openobserve/service.yaml
  • observability-logs-openobserve/helm/templates/openobserve/statefulset.yaml
  • observability-logs-openobserve/helm/values.yaml
  • observability-tracing-openobserve/README.md
  • observability-tracing-openobserve/helm/Chart.yaml
  • observability-tracing-openobserve/helm/templates/adapter/deployment.yaml
  • observability-tracing-openobserve/helm/templates/openobserve/service.yaml
  • observability-tracing-openobserve/helm/templates/openobserve/statefulset.yaml
  • observability-tracing-openobserve/helm/values.yaml
💤 Files with no reviewable changes (4)
  • observability-tracing-openobserve/helm/templates/openobserve/statefulset.yaml
  • observability-tracing-openobserve/helm/templates/openobserve/service.yaml
  • observability-logs-openobserve/helm/templates/openobserve/service.yaml
  • observability-logs-openobserve/helm/templates/openobserve/statefulset.yaml

@LakshanSS LakshanSS merged commit 52bb0e7 into openchoreo:main Mar 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants